/**
 * 
 */
package fr.gfi.agraf.vue.action.login;

import com.opensymphony.xwork2.ActionSupport;

import fr.gfi.agraf.service.IUtilisateurService;
import fr.gfi.agraf.utils.PropertiesUtils;
import fr.gfi.agraf.utils.SpringFactory;
import fr.gfi.agraf.utils.VerificationUtils;

/**
 * @author Fw
 * 
 */
public class ReinitMdpAction extends ActionSupport {

	private String email;

	private static String ERREUR_EMAIL_VIDE = "erreur.saisie.email.vide";
	public static final String ERREUR_EMAIL_INVALIDE = "erreur.saisie.email.invalide";
	private static String ERREUR_EMAIL_INCONNU = "erreur.saisie.email.inconnu";
	private static String SUCCESS_MDP_ENVOYE = "message.nouveau.mdp.envoye";

	/**
	 * Généré par Java
	 */
	private static final long serialVersionUID = 4726189671653224776L;

	@Override
	public String execute() throws Exception {
		// Verification de la présence en base du mail
		final IUtilisateurService utilisateurService = (IUtilisateurService) SpringFactory
				.getApplicationContext().getBean("UtilisateurService");
		if (!utilisateurService.traiterDemandeMdpOublie(email)) {
			addActionError(PropertiesUtils.getProperty(ERREUR_EMAIL_INCONNU));
		} else {
			// Si tout s'est bien passé...
			addActionMessage(PropertiesUtils.getProperty(SUCCESS_MDP_ENVOYE));
		}
		return SUCCESS;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.opensymphony.xwork2.ActionSupport#validate()
	 */
	@Override
	public void validate() {

		// Si le mail est vide
		if (email.length() == 0) {
			addActionError(PropertiesUtils.getProperty(ERREUR_EMAIL_VIDE));
			return;
		}

		// Verification sur le regex du mail
		if (!VerificationUtils.isEmailValide(email)) {
			addActionError(PropertiesUtils.getProperty(ERREUR_EMAIL_INVALIDE));
			return;
		}

	}

	public String getEmail() {
		return email;
	}

	public void setEmail(final String email) {
		this.email = email;
	}

}
